////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                            //
//                                                         WNProject                                                          //
//                                                                                                                            //
//            This file is distributed under the BSD 2-Clause open source license. See License.txt for details.               //
//                                                                                                                            //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef __WN_LINE_3_H__
#define __WN_LINE_3_H__

#include "WNCore/inc/WNBase.h"
#include "WNMath/inc/WNPoint3.h"

namespace WNMath {
    class WNVector3;

    class WNLine3 {
    public:
        WNLine3();
        explicit WNLine3(const WN_FLOAT32* _f);
        explicit WNLine3(const WNPoint3& _point1, const WNPoint3& _point2);

        WNLine3 operator + () const;
        WNLine3 operator - () const;

        WN_BOOL operator == (const WNLine3& _line) const;
        WN_BOOL operator != (const WNLine3& _line) const;

        WN_VOID Zero();

        WNVector3 Direction() const;

        WN_VOID Set(const WN_FLOAT32* _f);
        WN_VOID Set(const WNPoint3& _point1, const WNPoint3& _point2);

    public:
        WNPoint3 point1;
        WNPoint3 point2;
    };
}

#endif // __WN_LINE_3_H__